]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
6 years agoworkspacesView: Properly allocate workspaces
Florian Müllner [Fri, 26 Jun 2020 14:04:44 +0000 (16:04 +0200)]
workspacesView: Properly allocate workspaces

So far we've been allocating workspaces in a stack, and relied on
translation to move them to the right position. And as the position
depends on both the workspace's index and the view's viewport, some
care is needed to prevent gestures/scrolling from interfering with
layout updates.

Clean that up by properly allocating workspaces in a row or column,
and use a translation to reflect the current scroll position.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Don't set full geometry
Florian Müllner [Sat, 27 Jun 2020 15:32:14 +0000 (17:32 +0200)]
workspacesView: Don't set full geometry

It's not used anymore.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Stop using full geometry
Florian Müllner [Sat, 27 Jun 2020 15:25:25 +0000 (17:25 +0200)]
workspacesView: Stop using full geometry

Since the workspaces themselves stopped using it, there is little
reason for upholding the difference between "full" and "actual"
geometry.

Just base positioning/swiping on the view's allocation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Use work area for default geometry
Florian Müllner [Thu, 25 Jun 2020 23:08:29 +0000 (01:08 +0200)]
workspacesView: Use work area for default geometry

The workspace's layout manager keeps the workspace at the same ratio as
the work area, so it makes more sense to base the views' default geometry
on that as well than the monitor area we are using right now.

(It shouldn't matter much in practice, as this only affects views on
non-primary monitors where the work area usually matches the monitor area)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Simplify syncing actual geometry
Florian Müllner [Thu, 25 Jun 2020 23:15:33 +0000 (01:15 +0200)]
workspacesView: Simplify syncing actual geometry

We adjust the size and position of the primary view to match the workspaces
display, but views on other monitors are always set to fill their monitor.

Take that into account and create views with a fixed size and position, then
only sync the primary view to the new geometry.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Use actual container allocation
Florian Müllner [Fri, 26 Jun 2020 01:22:29 +0000 (03:22 +0200)]
workspace: Use actual container allocation

We currently assume that the passed in Clutter.ActorBox matches
the container allocation, but in reality it is the container's
content area.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Account for window picker padding
Florian Müllner [Fri, 26 Jun 2020 00:56:35 +0000 (02:56 +0200)]
workspace: Account for window picker padding

Workspaces are supposed to request the work area as their preferred
size, however the widget will adjust the sizes returned by the
layout manager to account for borders and padding.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Disable preview overlays unless fully zoomed out
Florian Müllner [Fri, 26 Jun 2020 15:06:38 +0000 (17:06 +0200)]
workspace: Disable preview overlays unless fully zoomed out

The overlays are only meant to be shown when the workspace is fully
zoomed out, not when using the floating layout or some in-between state.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agowindowPreview: Allow to disable overlay
Florian Müllner [Fri, 26 Jun 2020 15:01:31 +0000 (17:01 +0200)]
windowPreview: Allow to disable overlay

WindowPreviews now contain and manage overlaid elements like close
button or title label themselves. That's generally better, but right now
the only way to disable those overlays (for example during transitions)
is to prevent any hover or focus events from getting to the preview.

Instead, add some explicit API for enabling or disabling overlay support.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Handle minimized windows in layout
Florian Müllner [Thu, 25 Jun 2020 18:25:22 +0000 (20:25 +0200)]
workspace: Handle minimized windows in layout

The new layout manager always uses the window's regular size and position
for the floating state, but the preview of minimized windows should be
hidden instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agowindowPreview: Ensure style as soon as preview is realized
Jonas Dreßler [Mon, 6 Jul 2020 13:44:25 +0000 (15:44 +0200)]
windowPreview: Ensure style as soon as preview is realized

For the windowPreview we need to ensure the style information of the
border and title is up-to-date when chromeWidths() or chromeHeights() is
called. Since the introduction of the WorkspaceLayout those functions
may be called during an allocation cycle, which means we should avoid
calling queuing relayouts inside them. Calling StWidgets ensure_style()
method will queue a relayout though in case the newly generated theme
node has a different geometry.

So avoid queueing a relayout during allocation cycles (and the warning
Clutter logs because of that) by ensuring the style of the border and
title earlier, as soon as the WindowPreview is attached to a stage.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Animate opening new windows while in overview
Jonas Dreßler [Wed, 3 Jun 2020 16:32:45 +0000 (18:32 +0200)]
workspace: Animate opening new windows while in overview

Use the pivot point and scale to animate in new windows which are opened
while the overview is shown.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Use the new WorkspaceLayout for allocating window clones
Jonas Dreßler [Wed, 3 Jun 2020 16:17:54 +0000 (18:17 +0200)]
workspace: Use the new WorkspaceLayout for allocating window clones

Switch to the new WorkspaceLayout layout manager to allocate the window
clones of the overview properly using Clutters layouting mechanisms.

Since we now no longer make use of the fullGeometry, we can remove the
setFullGeometry() function from the Workspace class. Also we can stop
setting the actualGeometry on the Workspaces and WorkspaceViews and
instead just set the fixed position and size of the views to their
full or actual geometry. This also has the benefit that we no longer
have to set a custom clip, but can simply enable clip_to_allocation.

The geometry needs to be set inside a BEFORE_REDRAW later because
_updateWorkspacesActualGeometry() is called from a notify::allocation
handler.

This isn't doing any animations when showing/hiding the overview yet,
we'll add that in the next commit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Introduce layout manager for allocating the Workspace
Jonas Dreßler [Wed, 3 Jun 2020 16:10:09 +0000 (18:10 +0200)]
workspace: Introduce layout manager for allocating the Workspace

Add a new ClutterLayoutManager for layouting the workspaces of the
overview, WorkspaceLayout.

This layout manager integrates the existing LayoutStrategies used to
layout the window clones of the overview and supports freezing the
layout, animating between layout changes and adjusting the spacing for
the width and height of the window chrome. It also adds support for a
layout of the windows that looks the same as the actual workspace,
transitioning between that layout and the LayoutStrategy can be done by
setting the value of an StAdjustment, available using the
stateAdjustment getter function.

This will replace the current static-positioning based layouting of the
window clones in the next commit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspacesViews: Use translation for showing Workspaces
Jonas Dreßler [Wed, 3 Jun 2020 16:07:01 +0000 (18:07 +0200)]
workspacesViews: Use translation for showing Workspaces

We're going to use fixed position for positioning workspaces when
they're allocated by their own layout manager, using those positions to
scroll between different workspaces interferes with that, so do that
using translations instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agokeyboard: Request a bigger size in portrait orientation
Florian Müllner [Sat, 4 Jul 2020 00:36:10 +0000 (02:36 +0200)]
keyboard: Request a bigger size in portrait orientation

In portrait orientation, we set the height to the preferred height
for the monitor width (or, if smaller, a third o the screen height).

However as the forWidth currently doesn't make a difference, the height
is effectively controlled by the natural height of the keys - which is
rather small.

Address this by making AspectContainer request an appropriate preferred
size based on the fixed ratio.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2349

6 years agokeyboard: Fix setting height in portrait orientation
Florian Müllner [Sat, 4 Jul 2020 00:22:10 +0000 (02:22 +0200)]
keyboard: Fix setting height in portrait orientation

get_preferred_height() returns both the minimum and natural height,
not a single size. Math.min() doesn't handle that and returns NaN,
whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2349

6 years agoshell/window-tracker: Match on WM_CLASS first
Florian Müllner [Fri, 3 Jul 2020 15:34:23 +0000 (17:34 +0200)]
shell/window-tracker: Match on WM_CLASS first

Currently our heuristics for matching a window to its app check
for the application ID before the WM_CLASS, as the ID is more
reliable in so far that it is outside the application's control
and so it cannot use it to spoof a different application.

However this also prevents applications with multiple .desktop
files like LibreOffice from matching any .desktop files other
than the one under the main ID.

Since we now no longer allow the WM_CLASS to match a .desktop
file that doesn't belong to the sandboxed application, we can
fix that issue by checking the WM_CLASS first, without opening
the door to spoofing.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years agoshell/window-tracker: Enforce prefix for sandboxed applications
Florian Müllner [Fri, 3 Jul 2020 14:59:07 +0000 (16:59 +0200)]
shell/window-tracker: Enforce prefix for sandboxed applications

At least flatpak (no idea about snap, sorry) enforces that all .desktop
files exported by a sandboxed app use the application ID as prefix.

Add the same check when trying to find a match based on the WM_CLASS,
to prevent sandboxed apps from matching a .desktop file they do not
own.

At the moment this is unlikely as we check for a match on the
sandboxed app ID first, but we are about to change that.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years agoshell/window-tracker: Minor simplification
Florian Müllner [Fri, 3 Jul 2020 15:28:45 +0000 (17:28 +0200)]
shell/window-tracker: Minor simplification

Switching to autocleanup gives us a better separation between the
app/no-app cases.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years ago gdm: Introduce vmware credential manager for pre-authenticated logins
yun341 [Wed, 1 Jul 2020 22:54:55 +0000 (06:54 +0800)]
gdm: Introduce vmware credential manager for pre-authenticated logins

    The previous commit implemented a new CredentialManager interface to
    facilitate adding additional providers for pre-authenticating the user
    at the login screen.

    This commit implements a new credential manager using that interface
    for vmware deployments.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1983
6 years ago gdm: Refactor oVirt to a generic CredentialManager interface
yun341 [Fri, 3 Jan 2020 16:31:15 +0000 (00:31 +0800)]
gdm: Refactor oVirt to a generic CredentialManager interface

    Commit 4cda61a1 added support for pre-authenticated logins in
    oVirt environments. This feature prevents a user from having
    to type their password twice (once to the oVirt management machine,
    and then immediately again in the provisioned guest running gnome-shell).
    That feature is currently oVirt specific, but a similar feature would
    be useful in non-oVirt based virt farm environments.

    Toward that end, this commit generalizes the various aspects of the
    oVirt integration code, so that it can be reused in a subsequent
    commit for adding single sign on support in vmware deployments, too.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1983
6 years agobackground: Use actor.content.background
Daniel van Vugt [Wed, 1 Jul 2020 10:51:33 +0000 (18:51 +0800)]
background: Use actor.content.background

Because actor.background no longer exists and emitted errors when
referenced.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2949
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1343

6 years agost/adjustment: Add ::actor property
Jonas Ådahl [Tue, 16 Jun 2020 20:03:07 +0000 (22:03 +0200)]
st/adjustment: Add ::actor property

Will be used by transitions to set the timeline actor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agoshell/global: Adapt to after-paint signal type signature
Jonas Ådahl [Wed, 27 May 2020 07:34:01 +0000 (09:34 +0200)]
shell/global: Adapt to after-paint signal type signature

A stage view parameter was added.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agost/theme-node-transition: Pass actor when constructing timeline
Jonas Ådahl [Tue, 21 Apr 2020 16:50:15 +0000 (18:50 +0200)]
st/theme-node-transition: Pass actor when constructing timeline

Timelines now take an actor, to be able to derive an appropriate frame
clock, so pass the one of the actor we're transitioning on.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agomessageTray: Remove SourceActorWithLabel class
Mariana Picolo [Wed, 1 Jul 2020 22:18:04 +0000 (19:18 -0300)]
messageTray: Remove SourceActorWithLabel class

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1346

6 years agoshell/app: Add new get_icon() method
Florian Müllner [Tue, 30 Jun 2020 14:53:50 +0000 (16:53 +0200)]
shell/app: Add new get_icon() method

Now that we can always associate a GIcon with the app, add a method
to access it. While create_icon_texture() is still likely to be more
convenient in most cases, exposing the icon can still be useful, for
example to add it to a different kind of actor or to compare it with
other GIcons.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/texture-cache: Return a GIcon from bind_cairo_surface_property()
Florian Müllner [Tue, 30 Jun 2020 14:48:16 +0000 (16:48 +0200)]
st/texture-cache: Return a GIcon from bind_cairo_surface_property()

We still load the surface into an StImageContent, but instead of
adding the content to an actor we hand out, return the content
itself (as GIcon).

That means we lose the ability to specify an icon size, but as we
get the pixel data from a fixed-size surface anyway, that shouldn't
matter much in practice.

Not to mention that the function is only used for fallback X11 icons,
which are already shit more often than not.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/image-content: Implement GIcon interface
Florian Müllner [Tue, 30 Jun 2020 02:12:16 +0000 (04:12 +0200)]
st/image-content: Implement GIcon interface

On the one hand, this is a bit of a stretch: StImageContent is what
we create from GIcons.

But on the other hand, there's some justification: StImageContent does
represent an image (and likely icon) after all, and there's some
precedent with GdkPixbuf.

In the end as we don't care about serialization or loading from other
API, we can go with a very crude implementation that allows us to
pass out a content as GIcon and use it directly when "loading" it.

We will use that soon to represent X11 window icons as GIcons, which
in turn will allow us to unify app icon handling.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/viewport: Invalidate transform when it changes
Jonas Dreßler [Thu, 12 Mar 2020 12:33:25 +0000 (13:33 +0100)]
st/viewport: Invalidate transform when it changes

Since ClutterActor now caches the whole transformation matrix for an
actor, we need to invalidate the cached transform if the matrix returned
by apply_transform() implementations changes.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1308

6 years agost/widget: Remove get_resource_scale function
Jonas Dreßler [Thu, 28 May 2020 12:47:17 +0000 (14:47 +0200)]
st/widget: Remove get_resource_scale function

ClutterActor provides the same function, but with a different return
value. So since we already switched to the ClutterActor implementation
in our C code, we can now safely remove st_widget_get_resource_scale()
and update the JS code that's still using the old API.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agoSwitch to ClutterActors resource-scale-changed signal
Jonas Dreßler [Thu, 28 May 2020 12:43:26 +0000 (14:43 +0200)]
Switch to ClutterActors resource-scale-changed signal

Instead of using the "notify::resource-scale" signal and StWidgets
"resource-scale-changed" signal, use the new "resource-scale-changed"
signal of ClutterActor, which replaces its "resource-scale" property.

Since we'd now have two "resource-scale-changed" signals, one on
ClutterActor and one on StWidget, remove the StWidget one in favour of
the new one.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agoUse new clutter_actor_get_resource_scale() API
Jonas Dreßler [Thu, 28 May 2020 12:39:11 +0000 (14:39 +0200)]
Use new clutter_actor_get_resource_scale() API

Update the existing users of clutter_actor_get_resource_scale() to the
new API which doesn't return a boolean value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agounlockDialog: Fix scale-factor handling on multihead
Florian Müllner [Tue, 30 Jun 2020 11:08:03 +0000 (13:08 +0200)]
unlockDialog: Fix scale-factor handling on multihead

The blur effect needs to take the scale-factor into account, so we
listen for scale changes. However we set up the signal handler when
creating a background, which is repeated for each monitor, and every
time the monitor configuration changes. But we only disconnect the
last handler that was connected, and only when we are destroyed,
not when recreating backgrounds.

Fix this by splitting out updating the effect parameters to a separate
method that iterates over all backgrounds, so we can simply set up the
handler from the constructor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1341

6 years agoaltTab: Remove down arrow when removing an app from switcher
Sebastian Keller [Mon, 29 Jun 2020 20:51:41 +0000 (22:51 +0200)]
altTab: Remove down arrow when removing an app from switcher

The arrow of the removed app was still left in the list with the
visibility of the arrow still depending on the original list order. This
could either lead to apps with just one window now suddenly having a
down arrow or apps with multiple windows not having one. If the last
window in the list had a down arrow, it would have been displayed
outside the window switcher.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2935

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1340

6 years agoUpdate Latvian translation
Rūdolfs Mazurs [Mon, 29 Jun 2020 18:12:25 +0000 (18:12 +0000)]
Update Latvian translation

6 years agocleanup: Use Meta.Workspace.active property
Florian Müllner [Mon, 29 Jun 2020 14:50:27 +0000 (16:50 +0200)]
cleanup: Use Meta.Workspace.active property

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1337

6 years agoinhibitShortcutsDialog: Enable line wrapping for additional label
Jonas Dreßler [Sun, 28 Jun 2020 20:28:57 +0000 (22:28 +0200)]
inhibitShortcutsDialog: Enable line wrapping for additional label

The inhibitShortcutsDialog can show an additional label which explains
how to restore shortcuts. This label is not managed by the
MessageDialogContent, so we need to enable line wrapping and disable
ellipsization ourselves.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2616

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1336

6 years agodialog: Return GLib.SOURCE_REMOVE instead of false
Jonas Dreßler [Sun, 28 Jun 2020 11:06:50 +0000 (13:06 +0200)]
dialog: Return GLib.SOURCE_REMOVE instead of false

This is more readable than just returning false.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1336

6 years agodialog: Check whether text changed when setting title or description
Jonas Dreßler [Sun, 28 Jun 2020 11:06:26 +0000 (13:06 +0200)]
dialog: Check whether text changed when setting title or description

As usually with GObject setters, we should check whether the property
actually changed before setting the value and notifying the property. So
check whether the title or description text actually changed before
setting it.

This fixes a bug which makes the title flicker and change its size,
because when updating the title we remove the "leightweight" css class
and reapply it inside a later, which makes the title appear larger for
one frame.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2574

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1336

6 years agost/viewport: Only extend child allocation when scrolled
Florian Müllner [Sun, 28 Jun 2020 22:16:58 +0000 (00:16 +0200)]
st/viewport: Only extend child allocation when scrolled

When scrolled, the container's allocation is smaller than the allocation
of the content. To account for that, commit 2717ca9d080eb added the
additional size reported by the layout manager to the content allocation.

However as it did so unconditionally, we now allow children to extend
outside the parent even when *not* scrolled, which breaks any constraints
set on the container (like "width" or "max-height").

Fix this by only extending the child allocation in scrollable dimensions.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2491

6 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Sat, 27 Jun 2020 18:29:23 +0000 (18:29 +0000)]
Update Kazakh translation

6 years agost/tests: Replace ClutterGroup by ClutterActor
Georges Basile Stavracas Neto [Fri, 26 Jun 2020 19:32:24 +0000 (16:32 -0300)]
st/tests: Replace ClutterGroup by ClutterActor

ClutterGroup is deprecated and can be 1:1 replaced by ClutterActor,
so let's do it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1334

6 years agoReplace anchor point by translation and pivot point
Georges Basile Stavracas Neto [Fri, 26 Jun 2020 18:54:32 +0000 (15:54 -0300)]
Replace anchor point by translation and pivot point

Anchor point is deprecated and will eventually be removed from
Mutter's Clutter. Replace them by a combination of pivot point
and translation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1334

6 years agoworkspacesView: Small cleanup
Florian Müllner [Thu, 25 Jun 2020 22:25:22 +0000 (00:25 +0200)]
workspacesView: Small cleanup

scrollToActive() and friends are only used for handling the 'switch-workspace'
animation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1333

6 years agoworkspacesView: Don't make reactive
Florian Müllner [Thu, 25 Jun 2020 21:14:47 +0000 (23:14 +0200)]
workspacesView: Don't make reactive

Since commit a11f417cd0f98, scroll events are handled by the SwipeTracker.
There's no other reason for the view to be reactive, so don't make it so.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1333

6 years agost-label: Keep labels fully pre-rendered on the GPU
Daniel van Vugt [Wed, 24 Jun 2020 08:00:17 +0000 (16:00 +0800)]
st-label: Keep labels fully pre-rendered on the GPU

The performance of the icon grid was being hindered by a large number
of primitives (a few hundred) being copied from the CPU to the GPU on
each frame. This was first noticed in mutter#971 but we failed to
investigate all the issues at the time.

You can also see the high number using `COGL_DEBUG=batching` or
`COGL_DEBUG=disable-texturing`. So now it's obvious that high number is
every letter of every label being uploaded as a separate quad. Let's not
do that and instead treat the whole label as a single quad/texture.

Measured performance on an i7-7700 at UHD 3840x2160:

Journal entries per frame on the icon grid:
 * Before: 288 (18 KB copied from CPU to GPU)
 * After:   73 ( 4 KB copied from CPU to GPU)

Spring animation:
 * Before: 20-30 FPS, avg 22/peak 45 milliseconds per frame
 * After:  30-40 FPS, avg 14/peak 28 milliseconds per frame

Scrolling the icon grid:
 * Before: 15 FPS, 50 milliseconds per frame
 * After:  30 FPS, 28 milliseconds per frame

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1329

6 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Thu, 25 Jun 2020 04:34:15 +0000 (04:34 +0000)]
Update Kazakh translation

(cherry picked from commit d3384d29e42cd07e566e6ce237a576c9871b6e3d)

6 years agoappDisplay: Update folder dialog field before ungrabbing
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 18:32:27 +0000 (15:32 -0300)]
appDisplay: Update folder dialog field before ungrabbing

Noticed while working on customizable folders. Calling GrabHelper.ungrab()
ends up calling FolderDialog.popdown(), but at this point the '_isOpen'
field isn't updated yet, so we end up calling popdown() twice.

Update the '_isOpen' field before ungrabbing.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1332

6 years agoiconGrid: Adjust animation delay
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 15:54:52 +0000 (12:54 -0300)]
iconGrid: Adjust animation delay

As per design feedback, adjust the animation delay to be shorter.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1332

6 years agooverview: Pass drag source on item-drag-* signals
Georges Basile Stavracas Neto [Tue, 23 Jun 2020 13:30:33 +0000 (10:30 -0300)]
overview: Pass drag source on item-drag-* signals

Overview has signals to notify about starting, cancelling, and
finishing icon drags, but none of these signals pass the dragged
item to the callbacks.

Pass the dragged items to the 'item-drag-*' overview signals.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1332

6 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Wed, 24 Jun 2020 16:17:48 +0000 (16:17 +0000)]
Update Kazakh translation

6 years agooverview: Define ANIMATION_TIME earlier
Florian Müllner [Wed, 24 Jun 2020 13:28:53 +0000 (15:28 +0200)]
overview: Define ANIMATION_TIME earlier

Commit c7e597cf7278 tried to improve the slide animations when entering
the overview by using the same time as the overall overview animation,
but in fact broke the animation most of the times.

That is because the Overview imports OverviewControls before defining
the ANIMATION_TIME variable, so any javascript code that is evaluated
during that import will see the value as "undefined" (which is converted
to 0 for the animation).

Fix this by moving the ANIMATION_TIME variable before the imports instead
of the usual placement.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1331

6 years agooverviewControls: Animate sidebars the same duration as windows
Daniel van Vugt [Fri, 29 May 2020 08:50:14 +0000 (16:50 +0800)]
overviewControls: Animate sidebars the same duration as windows

When you tap Super and see the sidebars and windows slide, it looks more
cohesive if those animations complete at the same time.

Previously there were 0.09 seconds difference between the two animations
which was enough to make it look slightly buggy. Now it doesn't.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1289

6 years agoRevert "workspacesView: Work around spurious allocation changes"
Jonas Dreßler [Thu, 12 Mar 2020 12:43:07 +0000 (13:43 +0100)]
Revert "workspacesView: Work around spurious allocation changes"

We now found the underlying bug: The ControlsManager (which causes the
bad call to `_updateWorkspacesFullGeometry()`) is getting (re-)allocated
while we add the view to the overviewGroup actor because the
overviewGroup is already visible and the view is immediately getting
mapped by `clutter_actor_add_child_internal()`. That causes a
resource-scale calculation and that indirectly causes a call to
`_clutter_stage_maybe_relayout()` (explained more detailed in the last
commit).

So now that we got rid of the immediate relayout happening when mapping
the view, we can revert this fix.

This reverts commit 6cc19ee6f05102baef39b8a1bec73eff06699879.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1315

6 years agodateMenu: Do not ellipsize clock
MOZGIII [Mon, 22 Jun 2020 12:41:58 +0000 (15:41 +0300)]
dateMenu: Do not ellipsize clock

This addresses the issue with ellipsized clock that occurs when using
extensions that move the clock from the middle to the side of the top
bar.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1327

Signed-off-by: MOZGIII <mike-n@narod.ru>
6 years agowindowPreview: Fix a division by zero
Jonas Dreßler [Fri, 19 Jun 2020 08:10:21 +0000 (10:10 +0200)]
windowPreview: Fix a division by zero

When the bounding box size is 0 during allocation (which happens right
after creating a window for example), we're doing a division by zero and
end up with a NaN scale. This ends up making the childBox NaN, which
triggers an error in Clutters allocation machinery.

So fix that and fall back to a scale of 1 in case the bounding box is
empty.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1320

6 years agovolume: Update indicator when microphone volume changes
fludixx [Sun, 21 Jun 2020 00:51:01 +0000 (02:51 +0200)]
volume: Update indicator when microphone volume changes

The current microphone indicator only indicates if the microphone is in
use. Users might be also interested if their microphone is recording
or is muted, this commit enables that without opening the pop-up
menu. The microphone icon changes itself, depending on the sensitivity
of the microphone. It behaves similar to the already existing volume
indicator.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2902

6 years agoUpdated Lithuanian translation
Aurimas Černius [Sun, 21 Jun 2020 19:18:03 +0000 (22:18 +0300)]
Updated Lithuanian translation

6 years agowindowManager: Support prepending workspace with horizontal layouts
Florian Müllner [Fri, 19 Jun 2020 20:37:13 +0000 (22:37 +0200)]
windowManager: Support prepending workspace with horizontal layouts

Commit ce35d523a2 implemented that behavior for vertical workspace layouts,
there is no reason to not allow the same for horizontal layouts.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2916

6 years agost: Add st_clipboard_get_content()
Carlos Garnacho [Fri, 19 Jun 2020 11:27:04 +0000 (13:27 +0200)]
st: Add st_clipboard_get_content()

Complementing st_clipboard_set_content(), this function allows retrieving
specific mimetypes from the selection as GBytes.

Related: https://gitlab.gnome.org/GNOME/nautilus/-/issues/634

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1321

6 years agoappDisplay: Compare indicator and grid pages
Georges Basile Stavracas Neto [Mon, 25 May 2020 19:52:43 +0000 (16:52 -0300)]
appDisplay: Compare indicator and grid pages

In the past, the icon grid would update the number of pages
during the call to adaptToSize(). However, after the new grid
layout landed, the number of pages is updated by the time an
item is added or removed.

Instead of comparing the old and new number of pages in the
icon grid, compare the pages shown by the indicator, and the
grid pages.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agopageIndicator: Add getter for current number of pages
Georges Basile Stavracas Neto [Mon, 25 May 2020 19:51:26 +0000 (16:51 -0300)]
pageIndicator: Add getter for current number of pages

Add a getter to PageIndicators to retrieve the number of pages
it currently displays.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Allow a slighly bigger area for drag overshoot
Georges Basile Stavracas Neto [Fri, 22 May 2020 17:07:10 +0000 (14:07 -0300)]
appDisplay: Allow a slighly bigger area for drag overshoot

Now that we don't have the Frequent tab anymore, and subsequently
the buttons to switch tabs, the app grid fill all the way to the
bottom, leaving no room for drag overshoot.

Add a 20px (i.e. OVERSHOOT_THRESHOLD) area at the bottom of the
grid where dragging actually scrolls to the next page.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Factor out shared code into BaseAppView
Georges Basile Stavracas Neto [Fri, 22 May 2020 16:20:40 +0000 (13:20 -0300)]
appDisplay: Factor out shared code into BaseAppView

The two BaseAppView subclasses now share a lot in terms of
widgetry: they both have a scroll view, pagination dots, swipe
management, etc.

Move this shared code into BaseAppView. Notice, however, that
BaseAppView only creates the widgetry, but it doesn't add them
to any specific layout. FolderView arranges the widgetry in a
vertical box, while AppDisplay arranges it in a ShellStack.

Add a new 'orientation' parameter to BaseAppView and use it
to determine the orientation of the pagination dots, the swipe
tracker direction, and the scroll event handling.

It is worth noticing that the scroll event is a bit more
sophisticated now: when the orientation is horizontal, it
handles all directions since mice wheels usually only generate
up/down events.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoAdd pagination to the folder dialog
Georges Basile Stavracas Neto [Wed, 20 May 2020 22:20:15 +0000 (19:20 -0300)]
Add pagination to the folder dialog

Make the folder dialog's app grid horizontal, and add
paginators to it as well. Add a new _createGrid() method
to BaseAppView that created an IconGrid.IconGrid by
default, and make FolderView override it to return the
new FolderGrid class.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2436

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agotheme: Adjust folder dialog CSS
Georges Basile Stavracas Neto [Wed, 20 May 2020 22:19:40 +0000 (19:19 -0300)]
theme: Adjust folder dialog CSS

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Don't destroy FolderView directly
Georges Basile Stavracas Neto [Wed, 20 May 2020 19:22:36 +0000 (16:22 -0300)]
appDisplay: Don't destroy FolderView directly

When FolderIcon is destroyed, it destroyed the FolderView and, if
there's a folder dialog present, it destroys the dialog as well.

Turns out, the folder dialog adds the icon's FolderView to itself.
The view becomes part of the dialog's actor tree. When the dialog
is destroyed, it also tries to destroy the view - but the folder
view was already destroyed by FolderIcon!

Fix that by letting the dialog destroy the folder view if it exists,
otherwise destroy the folder view directly.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Add items in order
Georges Basile Stavracas Neto [Wed, 20 May 2020 00:31:45 +0000 (21:31 -0300)]
appDisplay: Add items in order

Add app icons to the exact page and position they're located
instead of always appending. This will be useful later when
custom icon positions are in place.

For now, it assumes pages are always filled, which is true,
but this will also change with custom icon positions.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Actually destroy icons
Georges Basile Stavracas Neto [Tue, 19 May 2020 20:49:09 +0000 (17:49 -0300)]
appDisplay: Actually destroy icons

AppDisplay currently adds all icons, and hides the ones inside
a folder. Change that to only add the icons that are not inside
folders. Adding an icon to a folder removes the icon from the
main grid.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Redisplay folders before AppDisplay
Georges Basile Stavracas Neto [Tue, 19 May 2020 20:32:22 +0000 (17:32 -0300)]
appDisplay: Redisplay folders before AppDisplay

When filtering out the app icons, AppDisplay calls FolderIcon.getAppIds(),
which then calls FolderView.getAllItems(). This last function reads the
already added app icons inside the given folder, and return their app ids.

So far, so good.

When the GSettings backing a folder changes, FolderIcon emits 'apps-changed'
to notify AppDisplay that the folder changed.

Cool.

When AppDisplay receives this signal, it first recreates its own icons, then
updates the folders, and finally hides the icons that are inside folders.

This series of events is unfortunate. Future patches will need the folder
to be updated *before* AppDisplay updates its own icons.

Update folder icons before chaining up to BaseAppView._redisplay().

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoappDisplay: Move child focus handling to IconGrid
Georges Basile Stavracas Neto [Tue, 19 May 2020 18:34:11 +0000 (15:34 -0300)]
appDisplay: Move child focus handling to IconGrid

The icon grid is always paginated, so the app grid code doesn't need
to behave differently in the FolderView and AppDisplay.

Move the keyboard handling to IconGrid itself, and remove the now dead
code from AppDisplay.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoiconGrid: Adapt grid layout according to available size
Georges Basile Stavracas Neto [Tue, 19 May 2020 17:19:05 +0000 (14:19 -0300)]
iconGrid: Adapt grid layout according to available size

The new icon grid layout operates based on rows and columns, and
doesn't try to dynamically adapt it to fit to the container. In
this case, it is better to have a pre-defined set of well-known,
well-tested rows and columns, and switch between them based on
the aspect ratio of the screen.

Introduce a set of modes to the icon grid, and select the mode
that is closest to the aspect ratio.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoiconGrid: Use IconGridLayout
Georges Basile Stavracas Neto [Tue, 19 May 2020 13:43:10 +0000 (10:43 -0300)]
iconGrid: Use IconGridLayout

Replace the current grid code with IconGridLayout.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agoiconGrid: Introduce IconGridLayout
Georges Basile Stavracas Neto [Tue, 19 May 2020 13:07:24 +0000 (10:07 -0300)]
iconGrid: Introduce IconGridLayout

IconGridLayout is a new layout manager that aims to replace the
current paginated layout algorithm implemented by the icon grid.

There are a few outstanding aspects of this new layout manager
that are worth highlighting. IconGridLayout implements all the
mechanisms necessary for a paginated icon grid, but doesn't
implement any policies around it. The reason behind this decision
is that this layout manager will be used by other places (e.g.
the login dialog) that demand different policies to how the
grid should look like.

Another important aspect of this grid is that it does not queue
any relayouts when changing its properties. If a relayout is
required, the actor should manually queue it. This is necessary
to avoid layout loops.

Add the IconGridLayout class. Next commits will do the surgery
to IconGrid and any related code to use this new layout manager.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271

6 years agost: Don't leak st_describe_actor strings
Daniel van Vugt [Wed, 17 Jun 2020 09:31:59 +0000 (17:31 +0800)]
st: Don't leak st_describe_actor strings

Hopefully this code doesn't get hit much. And it does seem to be the
only user of the function.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1319

6 years agoUpdate Romanian translation
Florentina Mușat [Wed, 17 Jun 2020 15:47:59 +0000 (15:47 +0000)]
Update Romanian translation

6 years agodnd: Set drag actor position immediately after reparenting
Jonas Dreßler [Tue, 9 Jun 2020 16:31:23 +0000 (18:31 +0200)]
dnd: Set drag actor position immediately after reparenting

For drag actors which get reparented to the uiGroup, we currently wait
until the next input event to set the fixed position of the actor, until
that they will just be allocated their old fixed position, which is 0,
0.

So avoid drag actors flickering at the top left for one frame and
position them correctly right after reparenting.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1310

6 years agodnd: Fix size of actors which don't get allocated their preferred size
Jonas Dreßler [Tue, 9 Jun 2020 16:30:12 +0000 (18:30 +0200)]
dnd: Fix size of actors which don't get allocated their preferred size

Properly adjust for drag actors which were allocated using a custom
vfunc_allocate() and might not have gotten allocated their preferred
size. When DND reparents the actor to the uiGroup, the drag actor will
get allocated its preferred size, so we also need to take the difference
between the old allocation size and the preferred size into account
before reparenting to the uiGroup.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1310

6 years agodnd: Don't override fixed position if actor had no fixed position before
Jonas Dreßler [Tue, 9 Jun 2020 16:29:02 +0000 (18:29 +0200)]
dnd: Don't override fixed position if actor had no fixed position before

Properly handle drag actors which are not allocated using a fixed
position and disable the fixed position we were using to move the actor
around before we reparent it again to its original parent.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1310

6 years agost/scroll-bar: Fix horizontal bar in RTL locales
Florian Müllner [Tue, 16 Jun 2020 21:07:08 +0000 (23:07 +0200)]
st/scroll-bar: Fix horizontal bar in RTL locales

As the view now scrolls from right-to-left in RTL locales, the
scroll bar handle should reflect that.

Likewise the event handling needs adjusting as well: Scrolling
left should increase the adjustment value, and clicking the
trough to the left of the handle as well.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1318

6 years agost/scroll-view: Adjust scroll events in RTL locales
Florian Müllner [Tue, 16 Jun 2020 22:46:35 +0000 (00:46 +0200)]
st/scroll-view: Adjust scroll events in RTL locales

In RTL locales, scrolling left should increase the adjustment value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1318

6 years agost/viewport: Fix horizontal translation in RTL locales
Florian Müllner [Tue, 16 Jun 2020 20:53:37 +0000 (22:53 +0200)]
st/viewport: Fix horizontal translation in RTL locales

In RTL locales, the lowest value should correspond to the right-most
position and vice-versa.

That this went unnoticed for so long shows how we have avoided horizontal
scrolling so far :-)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1318

6 years agoworkspace: Split WindowPreview into a separate file
Jonas Dreßler [Mon, 15 Jun 2020 21:03:06 +0000 (23:03 +0200)]
workspace: Split WindowPreview into a separate file

The workspace.js file is quite large and is a bit confusing when it
comes to the term "window" in there, because it can either refer to a
WindowPreview of a complete window or to an individual window like an
attached dialog.

So try to avoid that confusion and split the new WindowPreview class and
its WindowPreviewLayout layout manager out into a new windowPreview.js
file.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Stop exporting window actor in the WindowPreview
Jonas Dreßler [Mon, 8 Jun 2020 08:01:27 +0000 (10:01 +0200)]
workspace: Stop exporting window actor in the WindowPreview

Having a public property exporting the MetaWindow is enough to get the
window actor, too, so remove the public realWindow property and while at
it, rename that property to _windowActor, too.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Initialize WindowPreview using a MetaWindow
Jonas Dreßler [Mon, 8 Jun 2020 07:58:22 +0000 (09:58 +0200)]
workspace: Initialize WindowPreview using a MetaWindow

MetaWindow is Mutters representation of a window and provides all the
APIs about it, MetaWindowActor is just the ClutterActor that's drawing
that window. So use a MetaWindow to create a WindowPreview instead of
the window actor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Set overviewHint on MetaWindow
Jonas Dreßler [Fri, 12 Jun 2020 18:12:11 +0000 (20:12 +0200)]
workspace: Set overviewHint on MetaWindow

We want to stop using the MetaWindowActor for things which are actually
related to the MetaWindow, one more thing where we can change that is
the overviewHint, which is currently added to the MetaWindowActor.

So move that hint to the MetaWindow and stop calling
get_compositor_private() in a few more places.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Stop using WindowPreview.realWindow in the overview
Jonas Dreßler [Mon, 8 Jun 2020 07:50:41 +0000 (09:50 +0200)]
workspace: Stop using WindowPreview.realWindow in the overview

We can simply get the MetaWindowActor by calling
MetaWindow.get_compositor_private(), so stop accessing the realWindow
property of WindowPreview. For this we also have to make _isMyWindow()
and _isOverviewWindow() take a MetaWindow as an argument instead of a
MetaWindowActor.

Since the WorkspacesThumbnails are also drop targets for WindowPreviews
and their WindowClones also have the public metaWindow property, switch
to using the metaWindow property there, too.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Only pass MetaWindow to WindowPreviewLayout
Jonas Dreßler [Mon, 8 Jun 2020 07:41:51 +0000 (09:41 +0200)]
workspace: Only pass MetaWindow to WindowPreviewLayout

Since the WindowPreview class rarely needs to handle the actual actor
painting the window preview, refactor the WindowPreviewLayout a bit to
only pass a MetaWindow to its addWindow() and removeWindow() functions.

Also make the getWindows() function return an array of MetaWindows,
which makes the getMetaWindow() function obsolete, so remove that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Stop using clone terminology in WindowPreviewLayout
Jonas Dreßler [Mon, 8 Jun 2020 07:32:23 +0000 (09:32 +0200)]
workspace: Stop using clone terminology in WindowPreviewLayout

We're going to remove ClutterClones, so call the parameters to
addWindow() and removeWindow() "actor" instead of "clone". Also make the
destroyIds less confusing and rename the actual actor destroy id to
"destroyId", and rename the window actors destroy id to
"windowActorDestroyId".

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Make some functions in WindowPreview private
Jonas Dreßler [Mon, 8 Jun 2020 13:26:41 +0000 (15:26 +0200)]
workspace: Make some functions in WindowPreview private

Now that the WindowPreview also shows the overlays itself, we can make
some functions private.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Call _activate() directly when clicking the window preview
Jonas Dreßler [Mon, 8 Jun 2020 12:49:09 +0000 (14:49 +0200)]
workspace: Call _activate() directly when clicking the window preview

We can remove the simply callback function in favour of an anonymous
function here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Set WindowPreview offscreen redirect inside constructor
Jonas Dreßler [Thu, 4 Jun 2020 15:15:45 +0000 (17:15 +0200)]
workspace: Set WindowPreview offscreen redirect inside constructor

This can also be moved to constructor, so do it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Remove slot property of WindowPreview
Jonas Dreßler [Tue, 2 Jun 2020 14:23:59 +0000 (16:23 +0200)]
workspace: Remove slot property of WindowPreview

Since the slot property was only accessed by the old WindowOverlays to
get the position and size of the preview, we can safely stop setting it
and remove that property now.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agoworkspace: Rename WindowClone to WindowPreview
Jonas Dreßler [Mon, 8 Jun 2020 07:23:08 +0000 (09:23 +0200)]
workspace: Rename WindowClone to WindowPreview

Since ClutterClones are going to be removed, let's switch the
terminology here to something that's more understandable and rename the
WindowClone class and its layout manager to
WindowPreview/WindowPreviewLayout.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1307

6 years agost-widget: Use clutter_input_device_get_actor() to get pointer actor
Jonas Dreßler [Thu, 11 Apr 2019 20:32:56 +0000 (22:32 +0200)]
st-widget: Use clutter_input_device_get_actor() to get pointer actor

Use clutter_input_device_get_actor() since it replaces
clutter_input_device_get_pointer_actor().

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1285

6 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Mon, 15 Jun 2020 13:38:33 +0000 (13:38 +0000)]
Update Kazakh translation

6 years agowindowManager: Warn when removing old animationInfo
Jonas Dreßler [Tue, 12 May 2020 10:28:03 +0000 (12:28 +0200)]
windowManager: Warn when removing old animationInfo

Now that we properly notify mutter about when a size-change animation
has ended, it should never happen that a new size-change animation is
started without the last one being cancelled (ie. 'kill-window-effects'
being emitted).

This means there should also never be an old animationInfo attached to a
window actor, so warn in case we still find one when starting the
animation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1251

6 years agowindowManager: Use new mutter API to freeze window actors ourself
Jonas Dreßler [Tue, 12 May 2020 11:50:05 +0000 (13:50 +0200)]
windowManager: Use new mutter API to freeze window actors ourself

We're currently using the hack of telling mutter that our effect is
completed (even though it isn't) in order to unfreeze updates of the
window actor.

This causes a bug with detecting the wl_outputs a window is
visible on, because the MetaWindowActor emits its "effects-completed"
signal too early, making Mutter update the wl_outputs while we're doing
the animation.

Now since meta_wayland_actor_surface_is_on_logical_monitor() uses the
transformed position and size of the MetaSurfaceActor and is being
called right after we setup the animation (but before it actually
starts, that happens at the next paint cycle) it will use a "very wrong"
rectangle: The transformation has been set to move the actor back to its
old position, and while we did already unfreeze updates and called
clutter_actor_set_position() in meta_window_actor_sync_actor_geometry(),
the actual allocation is not updated yet; this makes
clutter_actor_get_transformed_position() return a position including in
the new transformation, but not including the new allocation, and the
rectangle ends up being moved to the next monitor or completely out of
the stage.

To fix this issue properly, we need to decouple unfreezing actor updates
from emitting the "effects-completed" signal, which is now possible with
the new meta_window_actor_freeze() and meta_window_actor_thaw() APIs. So
use those new methods to freeze and thaw actor updates ourselves and
make sure to call shellwm.completed_size_change() only after the
animation has finished.

Mutter MR: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1250

Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/513

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1251